package org.afs.gescol.gwt.client.event;

import java.util.ArrayList;
import java.util.List;

import org.scub.foundation.framework.gwt.module.client.event.HistoryEvent;
import org.scub.foundation.framework.gwt.module.client.util.TokenParam;
import org.scub.foundation.framework.gwt.module.client.util.TokenUtil;

public class EditPersonneEvent extends HistoryEvent<EditPersonneEventHandler> {

    /** The event's type. */
    public static final Type<EditPersonneEventHandler> TYPE = new Type<EditPersonneEventHandler>();

    /** The page. */
    public static final String PAGE = "ep";

    public static final String PARAM_TYPE_PERSON = "tp";

    public static final String PARAM_ID_PERSON = "id";

    public static final String PARAM_NOM_PERSON = "nom";

    private Long id;

    private Long typePersonne;

    private String nomPrenomsPersonne;

    public EditPersonneEvent(Long typePersonne, Long id, String nomPrenomsPersonne) {
        super(PAGE);
        this.typePersonne = typePersonne;
        this.id = id;
        this.nomPrenomsPersonne = nomPrenomsPersonne;
    }

    @Override
    public String getExtraParamsToken() {
        final List<TokenParam> listeParams = new ArrayList<TokenParam>();
        listeParams.add(new TokenParam(PARAM_TYPE_PERSON, typePersonne));
        listeParams.add(new TokenParam(PARAM_ID_PERSON, id));
        listeParams.add(new TokenParam(PARAM_NOM_PERSON, nomPrenomsPersonne));
        return TokenUtil.buildToken(listeParams);
    }

    @Override
    public Type<EditPersonneEventHandler> getAssociatedType() {
        return TYPE;
    }

    @Override
    protected void dispatch(EditPersonneEventHandler handler) {
        handler.onEditPersonne(this);
    }

    /**
     * Get the value of id.
     * @return the id
     */
    public Long getId() {
        return id;
    }

    /**
     * Set the value of id.
     * @param id the id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * Get the value of typePersonne.
     * @return the typePersonne
     */
    public Long getTypePersonne() {
        return typePersonne;
    }

    /**
     * Set the value of typePersonne.
     * @param typePersonne the typePersonne to set
     */
    public void setTypePersonne(Long typePersonne) {
        this.typePersonne = typePersonne;
    }

    /**
     * Get the value of nomPrenomsPersonne.
     * @return the nomPrenomsPersonne
     */
    public String getNomPrenomsPersonne() {
        return nomPrenomsPersonne;
    }

    /**
     * Set the value of nomPrenomsPersonne.
     * @param nomPrenomsPersonne the nomPrenomsPersonne to set
     */
    public void setNomPrenomsPersonne(String nomPrenomsPersonne) {
        this.nomPrenomsPersonne = nomPrenomsPersonne;
    }

}
